/**
 * @file	File.hpp
 * @brief	Provide convenience method on file
 */

#ifndef _FILE_HPP_
#define _FILE_HPP_

////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <string>
#include <fstream>

namespace smeg
{
    namespace tools
    {
        ////////////////////////////////////////////////////////////
        /// Class to manipulate files easily
        ////////////////////////////////////////////////////////////
        class File
        {
        public:
            
            ////////////////////////////////////////////////////////////
            /// Default constructor
            ///
            /// \param Name :   Name of the file to open
            ///
            ////////////////////////////////////////////////////////////
            File( const std::string& _Name = "unknown" );
            
            ////////////////////////////////////////////////////////////
            /// Constructor with const char* Name
            ///
            /// \param Name :   Name of the file to open
            ///
            ////////////////////////////////////////////////////////////
            File( const char* _Name );
            
            ////////////////////////////////////////////////////////////
            /// Does the file exists or not
            ///
            /// \return Whether the file exists or not
            ///
            ////////////////////////////////////////////////////////////
            bool Exists() const;

            ////////////////////////////////////////////////////////////
            /// Get the full filename
            ///
            /// \return The filename with its full path
            ///
            ////////////////////////////////////////////////////////////
            const std::string& Fullname() const;

            ////////////////////////////////////////////////////////////
            /// Get the filename
            ///
            /// \return The filename without its full path
            ///
            ////////////////////////////////////////////////////////////
            std::string Filename() const;

            ////////////////////////////////////////////////////////////
            /// Get the filename without extension
            ///
            /// \return The filename without its full path and its extension
            ///
            ////////////////////////////////////////////////////////////
            std::string ShortFilename() const;

            ////////////////////////////////////////////////////////////
            /// Get the extension
            ///
            /// \return The extension of the file
            ///
            ////////////////////////////////////////////////////////////
            std::string Extension() const;

        private:
            std::string		m_Name; /// Full path of the file
        };

    } // namespace tools
} // namespace smeg

#endif // _FILE_HPP_
